iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
Mobile Development

SwiftUI 的大大小小系列 第 19

Day 19 - 用 SwiftUI 的 repeatForever 做出持續進行的動畫

  • 分享至 

  • xImage
  •  

hero

repeatForever 官方文件

基本用法

Animation.linear(duration: 1)
    .repeatForever(autoreverses: false)

由於 autoreverses 預設是 true ,而我們通常希望動畫能夠持續「正向」持續地播放而不是反向播放,因此這邊要傳入 false

例・重新整理按鈕

struct ContentView: View {
    @State private var isRotating: Bool = false

    var body: some View {
        Button {
            isRotating.toggle()
        } label: {
            Image(systemName: "arrow.triangle.2.circlepath")
                .rotationEffect(isRotating ? .degrees(180) : .zero)
                .animation(isRotating ? animation : .linear(duration: 0), value: isRotating)
        }
    }
    
    private var animation: Animation {
        Animation.linear(duration: 1)
            .repeatForever(autoreverses: false)
    }
}

效果圖

1901

結語

以上,

那今天的 SwiftUI 的大大小小就到這邊,明天見!

環境

  • Xcode 15 beta 8

本篇使用到的 UI 元件和 modifiers 基本上沒有受到版本更新影響

因此 Xcode 14 等環境下使用也是沒問題的。


上一篇
Day 18 - 在 SwiftUI 使用 @ViewBuilder 之 2
下一篇
Day 20 - SwiftUI 中的 NavigationStack 使用 NavigationLink 與 dismiss
系列文
SwiftUI 的大大小小30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言